<?php 
// 分类管理控制器
class CategoryController extends AuthController{
	private $model;

	 // 初始化函数
	public function __init(){
		parent::__init();
		$this->model = K('Category');
	}

	// 显示分类列表
	public function index(){
		// 获得所有数据
		$data = $this->model->all();
		// 获得树状结构的数据
		$data = Data::tree($data,'cname','cid','pid');
		// p($data);
		$this->assign('data',$data);
		$this->display();
	}

	// 添加分类
	public function add(){
		$data = $this->model->all();
		$data = Data::tree($data,'cname');
		$this->assign('data',$data);
		if(IS_POST){
			//调用模型的添加，里面包含自动验证
			if(!$this->model->addData()){
				$this->error($this->model->error);
			}
			$this->success('添加成功',U('Admin/Category/index'));
		}
		$this->display();
	}

// 添加子分类
	public function add_son(){
		// 处理所属分类
		$cid = Q('get.cid',0,'intval');
		// p($cid);

		if(IS_POST){
			if(!$this->model->addData()){
				$this->error($this->model->error);
			}
			$this->success('添加成功',U('Admin/Category/index'));
		}

		$typeData = K('Type')->all();
		// p($typeData);
		$this->assign('typeData',$typeData);
		$this->display();
	}

	// 编辑分类
	public function edit(){
		$cid = Q('get.cid',0,'intval');
		// p($cid);
		// 获得旧数据
		$oldData = $this->model->where("cid={$cid}")->find();
		// p($oldData);
		$this->assign('oldData',$oldData);

		// 获得所属分类
		$cateDate = $this->model->all();
		// 找到自己和自己的子集
		$sonCid = $this->model->getSon($cateDate,$cid);
		$sonCid[] = $cid;
		// p($sonCid);
		// 显示出来的分类里不能有自己和自己的子集
		$cateDate = $this->model->where("cid NOT IN(" . implode(',', $sonCid) . ")")->all();
		// p($cateDate);
		$cateDate = Data::tree($cateDate,'cname');
		$this->assign('cateDate',$cateDate);

		// 处理所属类型
		$typeData = K('Type')->all();
		$this->assign('typeData',$typeData);

		if(IS_POST){
			// p(Q('post.'));
			$this->model->where("cid={$cid}")->update();
			$this->success('修改成功',U('Admin/Category/index'));
		}
		$this->display();
	}

	// 获得子级分类
	public function getSon(){
		if(!IS_AJAX) $this->error('非法请求',U('Admin/Category/index'));
		// 获得cid
		$cid = Q('post.cid',0,'intval');
		$data = $this->model->all();
		// 获得cid所对应的所有的子集
		$sonData = $this->model->getSon($data,$cid);
		// 返回给ajax的数据
		$this->ajax($sonData);

	}

	// 删除分类
	public function del(){
		$cid = Q('get.cid',0,'intval');
		// 先看看要删除的分类有没有子分类，要是有的话提示要一层一层删除
		if($this->model->where("pid={$cid}")->all()){
			$this->error('请先删除子分类');
		}
		// 如果没有子分类的话就直接删除
		$this->model->where("cid={$cid}")->delete();
		$this->success('删除成功',U('Admin/Category/index'));
	}


}


 ?>